<?

date_default_timezone_set('America/Buenos_Aires');

class ServiciosVentas {
	
	//mysql_result
	//mysql_num_rows
	//mysql_fetch_array
	
	function TraerVentas() {
		$sql = "select * from dbventas order fechacreacion";
		return $this-> query($sql,0);
	}

	function TraerProductos() {
		$sql = "select * from dbproductos order by detalle";
		return $this-> query($sql,0);
	}

	function TraerLocalidad($idlocalidad)
	{
		$sql = "select localidad from tblocalidad where idlocalidad =".$idlocalidad;
		return $this-> query($sql,0);
	}

	function TraerDetallesFacturaConfirmar($idusuario)
	{
		$sql = "SELECT 
					df.nroproducto,
					df.idproducto,
					df.precioventa,
					df.cantidad,
					df.refusuario,
					p.detalle,
					df.iddetallefactura
				FROM
					tbdetallefactura df
						inner join
					dbproductos p ON df.idproducto = p.idproducto
				where
					activo = 1 and refusuario =".$idusuario;
		return $this-> query($sql,0);
	}
	
	function insertarDetalleFacturaAuxComun($idproducto,$nroproducto,$cantidad,$precioventa,$usuario) {
        
		
		$sql = "insert into tbdetallefactura(iddetallefactura,
											 nroproducto,
											 idproducto,
											 precioventa,
											 cantidad,
											 refusuario,
											 activo) values ('', '".$nroproducto."',".
											 $idproducto.",".
											 $precioventa.",".
											 $cantidad.",".$usuario.",1)";
		$this -> query($sql,1);
    }
	
	function TraerDetallesFacturaReserva($idusuario)
	{
		$sql = "SELECT 
					df.nroproducto,
					df.idproducto,
					df.precioventa,
					df.cantidad,
					df.refusuario,
					p.detalle,
					df.iddetallereserva
				FROM
					dbdetallereserva df
						inner join
					dbproductos p ON df.idproducto = p.idproducto
				where
					activo = 1 and refusuario =".$idusuario;
		$res = $this-> query($sql,0);
		
		while ($row = mysql_fetch_array($res))
		{
			if ($this->hayStock($row['cantidad'],$row['idproducto']) == true)
			{
				$this->insertarDetalleFacturaAuxComun($row['idproducto'],$row['nroproducto'],$row['cantidad'],$row['precioventa'],$row['refusuario']);
				//($idproducto,$nroproducto,$cantidad,$precioventa,$usuario)
			}
		}
		
		
		return $this-> query($sql,0);
	}
	
	function insertarCompra($factura,$fechacreacion,$usuacrea,$ubicacion,$refcliente,$reftipopago)
	{
		$sqlDBF = "INSERT INTO dbaggiornodeco.dbdetallefacturas
				(iddetallefactura,
				nrofactura,
				refproducto,
				precioventa,
				refcondicion,
				cantidad,
				refcategoria)
				SELECT
				'',
				'".$factura."',
				tbdetallefactura.idproducto,
				tbdetallefactura.precioventa,
				null,
				tbdetallefactura.cantidad,
				null
				FROM
				tbdetallefactura";
		$resDBF = $this-> query($sqlDBF,1);
		
		$sqlDescontarStock = "SELECT
				tbdetallefactura.idproducto,
				tbdetallefactura.cantidad
				FROM
				tbdetallefactura";
		$resDesc = $this->query($sqlDescontarStock,0);
		while ($rowDesc = mysql_fetch_array($resDesc))
		{
				$this->DescontarStock($rowDesc[1],$rowDesc[0]);	
		}
		
		$sqlF = "INSERT INTO dbaggiornodeco.dbfacturas
				(idfactura,                            
				nrofactura,                            
				fechacreacion,                         
				usuacrea,                              
				ubicacion,                             
				reftipopago,                           
				refcliente,
				cancelada)                            
				VALUES                                   
				('',
				'".$factura."',                        
				'".$fechacreacion."',                     
				'".$usuacrea."',                          
				'".$ubicacion."',                         
				".$reftipopago.",                       
				".$refcliente.",
				0)";
		$resF = $this-> query($sqlF,1);	
		
		if ($this->TieneReserva($refcliente) != '')
		{
			$sqlBorroReserva = "delete from dbreservas where refcliente =".$refcliente;
			$this-> query($sqlBorroReserva,0);
			$sqlBorroDetalleReserva = "delete from dbdetallereserva where refcliente =".$refcliente;
			$this-> query($sqlBorroDetalleReserva,0);
		}
		
		return $sqlDBF.'<br>'.$sqlF;
	}

function TraerProductosGral() {
		$sql = "select p.idproducto,
						p.codigo,
						p.detalle,
						p.fechacompra,
						p.preciocompra,
						p.stock,
						m.nombre,
						p.imagen,
						p.precioventa,
						c.categoria,
						p.descripcion,
						p.minstock
						 FROM dbproductos p
						inner
						join	tbcategorias c
						on  p.refcategoria = c.idcategorias
						inner
						join	tbmayoristas m
						on  p.refmayorista = m.idmayoristas
						order by p.detalle,p.codigo";
		return $this-> query($sql,0);
	}
	
	function TraerProductosGralId($id) {
		$sql = "select p.idproducto,
						p.codigo,
						p.detalle,
						p.fechacompra,
						p.preciocompra,
						p.stock,
						m.nombre,
						p.imagen,
						p.precioventa,
						c.categoria,
						p.descripcion,
						p.refcategoria,
						p.refmayorista,
						p.minstock 
						FROM dbproductos p
						inner
						join	tbcategorias c
						on  p.refcategoria = c.idcategorias
						inner
						join	tbmayoristas m
						on  p.refmayorista = m.idmayoristas
						where p.idproducto = ".$id;
		return $this-> query($sql,0);
	}
	
	function TraerClientes() {
		$sql = "select * from dbclientes order by apellido,nombre";
		return $this-> query($sql,0);
	}
	
	function TraerClientesPorAP($ap) {
		$sql = "select nrocliente,apellido,nombre from dbclientes where concat(apellido, ' ',nombre) like '%".$ap."%'  order by apellido,nombre";
		return $this-> query($sql,0);
	}
	
	function TraerProductosPorNombre($nombre)
	{
		$sql = "select codigo,detalle,idproducto,precioventa,stock from dbproductos p where p.detalle like '%".$nombre."%'";	
		return $this-> query($sql,0);
		//return $sql;
	}
	
	function TraerProductoPorCodigo($codigo)
	{
		$sql = "select detalle,idproducto,precioventa from dbproductos p where p.codigo = '".$codigo."'";	
		return $this-> query($sql,0);
		//return $sql;
	}
	
	function traerClientePorNumero($numero)
	{
		$sql = "select concat(p.apellido,' ',p.nombre),idcliente from dbclientes p where p.nrocliente = '".$numero."'";	
		return $this-> query($sql,0);
		//return $sql;
	}
	
	function generarFactura() {
		$sql = "select idfactura from dbfacturas order by idfactura desc limit 1";
		return $this-> query($sql,0);
	
	}
	
	function borrarDetalleFacturaAuxPorCod($nroproducto) {
        $sql = "delete from tbdetallefactura where activo = 1 and iddetallefactura = ".$nroproducto;
        $this-> query($sql,0);
    }
	
	function borrarDetalleFacturaAux() {
        $sql = "delete from tbdetallefactura where activo = 1";
        $this-> query($sql,0);
    }
    
    function DescontarStock($cantidad, $idproducto) {
    	$sqlP = "update dbproductos set stock = stock - ".$cantidad." where idproducto =".$idproducto;
    	$this-> query($sqlP,0);
    }
    
    function AgregarStock($cantidad, $idproducto) {
    	$sqlP = "update dbproductos set stock = stock + ".$cantidad." where idproducto =".$idproducto;
    	$this-> query($sqlP,0);
    }
    
	function hayStock($cantidad,$idproducto) {
		$sql = "select stock from dbproductos p where p.idproducto = ".$idproducto;
    	$stockBase = mysql_result($this->query($sql,0),0,0);
		
		if ($stockBase > $cantidad) {
			return true;	
		} else {
			return false;	
		}
	}
    function tieneStock($cantidad,$idproducto) {
    	$sql = "select stock from dbproductos p where p.idproducto = ".$idproducto;
    	$stockBase = mysql_result($this->query($sql,0),0,0);
    	
    	$sqlAux = "SELECT sum(cantidad) FROM tbdetallefactura p where p.idproducto = ".$idproducto;
    	$stockUtilizadoRes = $this->query($sqlAux,0);
    	if (mysql_num_rows($stockUtilizadoRes) > 0) {
    		$stockUtilizado = mysql_result($stockUtilizadoRes,0,0);	
    	} else {
    		$stockUtilizado = 0;
    	}
		
		if ($cantidad <= $stockBase - $stockUtilizado) {
			return true;
		} else {
			return false;
		}
    }
    
    function TieneReserva($idcliente) {
    	$sql = "select dr.* 
				from		dbdetallereserva dr 
				inner
				join		dbreservas r
				on			r.refcliente = dr.refcliente
				where       dr.refcliente =".$idcliente." and r.vigencia >= Now()";
    	$res = $this->query($sql,0);
    	
    	if (mysql_num_rows($res) > 0) {
    		return true;
    	} else {
    		return false;
    	}
    }
    
    
	function insertarDetalleFacturaAux($nroproducto,$cantidad,$precioventa,$usuario) {
        
		$resproducto = $this-> query("select detalle,idproducto,precioventa from dbproductos p where p.codigo = '".$nroproducto."'",0);
		$idproducto = mysql_result($resproducto,0,1);
		$sql = "insert into tbdetallefactura(iddetallefactura,
											 nroproducto,
											 idproducto,
											 precioventa,
											 cantidad,
											 refusuario,
											 activo) values ('', '".$nroproducto."',".
											 $idproducto.",".
											 $precioventa.",".
											 $cantidad.",1,1)";
											 
        return $this-> query($sql,1);
    }
	
	function agregarReserva($cliente,$vigencia,$usuario) {
		$formatearFecha = explode("/",$vigencia);
		$fechaNueva = $formatearFecha[2]."-".$formatearFecha[1]."-".$formatearFecha[0];
		
		$sql= "insert into dbdetallereserva
				SELECT 
				'',
			    nroproducto,
			    idproducto,
			    precioventa,
			    cantidad,
			    refusuario,
				'".$cliente."',
			    1
				FROM tbdetallefactura;";
		$this-> query($sql,1);
		
		$sqlI = "insert into dbreservas values ('',".$cliente.", '".$usuario."', '".date('Y-m-d H:i:s')."', '".$fechaNueva."')";
		$this-> query($sqlI,1);
		
	}
	
	function confirmarVenta($factura,$idcliente,$fecha,$idcondiciones,$idcategoria,$usuario,$ubicacion,$refTipoPago) {
		$sqlDetalles= "insert into dbdetallefacturas (`iddetallefactura`,
												`nrofactura`,
												`refproducto`,
												`precioventa`,
												`refcondicion`,
												`cantidad`,
												`refcategoria`)
				SELECT 
				'',
				'".$factura."',
			    idproducto,
			    precioventa,
			    1,
				cantidad,
				1
				FROM tbdetallefactura;";
		$this-> query($sqlDetalles,1);
		
		$sqlFactura = "INSERT INTO dbaggiornodeco.dbfacturas
												(idfactura,
												nrofactura,
												fechacreacion,
												usuacrea,
												ubicacion,
												reftipopago,
												refcliente,
												cancelada)
												VALUES
												('',
												'".$factura."',
												'".$fecha."',
												'".$usuario."',
												'".$ubicacion."',
												".$refTipoPago.",
												".$idcliente.",
												0)";
		$this-> query($sqlFactura,1);
		
		
	}
	


	function existeCodigoProducto($codproducto) {
		$sql = "select idproducto from dbproductos where codigo = '".$codproducto."'";	
		$res = $this-> query($sql,0);
		if (mysql_num_rows($res) > 0) {
			return true;	
		} else {
			return false;
		}
	}
	
	function insertarProducto($codigo,$stock,$precioventa,$preciocompra,$idmayorista,$idcategoria,$detalle,$descripcion,$imagen,$minstock) {
		$sql = "INSERT INTO dbaggiornodeco.dbproductos
							(idproducto,
							codigo,
							detalle,
							fechacompra,
							preciocompra,
							stock,
							refmayorista,
							imagen,
							precioventa,
							refcategoria,
							descripcion,
							minstock)
							VALUES
							('',
							'".$codigo."',
							'".$detalle."',
							'".date('Y-m-d')."',
							".$preciocompra.",
							".$stock.",
							".$idmayorista.",
							'".$imagen."',
							".$precioventa.",
							".$idcategoria.",
							'".$descripcion."',
							".$minstock.");";
		return $this-> query($sql,1);	
		//return $sql;
	}
	
	function borrarProducto($id) {
		$sql = "delete from dbproductos where idproducto = ".$id;
		return $this-> query($sql,0);	
		
	}
	
	
	function modificarProducto($id,$codigo,$stock,$precioventa,$preciocompra,$idmayorista,$idcategoria,$detalle,$descripcion,$imagen,$minstock) {
		$sql = "update dbaggiornodeco.dbproductos
							set  codigo = '".$codigo."',
							detalle = '".$detalle."',
							fechacompra = '".date('Y-m-d')."',
							preciocompra = ".$preciocompra.",
							stock = ".$stock.",
							refmayorista = ".$idmayorista.",
							imagen = '".$imagen."',
							precioventa = ".$precioventa.",
							refcategoria = ".$idcategoria.",
							descripcion = '".$descripcion."',
							minstock = ".$minstock."
							where idproducto = ".$id;
		return $this-> query($sql,0);	
		//return $sql;
	}
	
	function insertarCliente($nrocliente,$apellido,$nombre,$email,$telefono,$fechanaciemiento) {
		$sql = "INSERT INTO dbaggiornodeco.dbclientes
											(idcliente,
											apellido,
											nombre,
											nrocliente,
											refroll,
											email,
											telefono,
											fechanacimiento)
											VALUES
											('',
											'".$apellido."',
											'".$nombre."',
											'".$nrocliente."',
											2,
											'".$email."',
											'".$telefono."',
											'".$fechanaciemiento."');";
		return $this-> query($sql,1);
	}
	
	function existe($campo,$tabla,$where) {
		$sql = "select * from ".$tabla." where ".$where."='".$campo."'";
		$res = $this-> query($sql,0);
		if (mysql_num_rows($res) > 0) {
			return 1;
		} else {
			return 0;
		}
	}
	
	Function query($sql,$accion) {
		
		
		$hostname = "localhost";
		$database = "dbaggiornodeco";
		$username = "root";
		$password = "";
		/*
		$hostname = "128.1.126.12";
		$database = "pruebas";
		$username = "root";
		$password = "";
		*/
		
		$conex = mysql_connect($hostname,$username,$password) or die ("no se puede conectar".mysql_error());
		
		mysql_select_db($database);
		
		$result = mysql_query($sql,$conex);
		if ($accion && $result) {
			$result = mysql_insert_id();
		}
		mysql_close($conex);
		return $result;
		
	}
	
	
	
} //fin de servicios
	

?>